package org.demo.converter;

import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;

/**
 * 自定义的转换器，用于适配 EasyExcel 的默认转换器未支持的 java 类型
 *
 * @author yexi
 */
public abstract class BaseConverter<T> implements Converter<T> {

    private final Class<T> clazz;

    public BaseConverter(Class<T> clazz) {
        this.clazz = clazz;
    }

    @Override
    public Class<T> supportJavaTypeKey() {
        return clazz;
    }

    /**
     * 支持的excel内部的数据类型
     */
    @Override
    public CellDataTypeEnum supportExcelTypeKey() {
        return CellDataTypeEnum.STRING;
    }

    /**
     * 将excel对象转换为Java对象(导入时)
     *
     * @param cellData            Excel 内部单元格数据，非空。
     * @param contentProperty     内容属性，非空。
     * @param globalConfiguration 全局配置，非空。
     * @return 数据要置入的Java类型
     */
    @Override
    public T convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
        return null;
    }

    /**
     * 将Java对象转换为excel对象(导出时)
     *
     * @param value               Java数据，非空。
     * @param contentProperty     内容属性，非空。
     * @param globalConfiguration 全局配置，非空。
     * @return Excel 内部单元格数据，非空。
     */
    @Override
    public CellData<T> convertToExcelData(T value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
        return new CellData<>(value.toString());
    }



}
